import axios from 'axios';
import { BASE_URL, TIMEOUT } from '../config';
// 进度条
import NProgress from 'nprogress'; // progress bar
import 'nprogress/nprogress.css'; // progress bar style
NProgress.configure({ showSpinner: false });

const service = axios.create({
  // 默认的配置
  baseURL: BASE_URL, // -> http://codercba.com:9002/banner
  timeout: TIMEOUT, // -> 5000
  headers: {},
  // 跨域处理
  withCredentials: true, //一般请求只在同源携带 cookie , 带上他后即使跨域也会携带
  // 在url添加默认后缀: /api
});
// export interface AxiosResponse<T = any, D = any> {
//   data: T;
//   status: number;
//   statusText: string;
//   request?: any;
// }
service.interceptors.request.use(
  // 请求拦截
  (config) => {
    // 1.发送网络请求时, 在界面的中间位置显示Loading的组件
    NProgress.start(); // 启动滚动条
    // 2.某一些请求要求用户必须携带token, 如果没有携带, 那么直接跳转到登录页面

    // 3.params/data序列化的操作
    return config;
  },
  (err) => {}
);
service.interceptors.response.use(
  // 响应拦截
  (res) => {
    NProgress.done(); // 关闭滚动条
    return res.data;
  },
  (err) => {
    if (err && err.response) {
      switch (err.response.status) {
        case 400:
          console.log('请求错误');
          break;
        case 401:
          console.log('未授权访问');
          break;
        default:
          console.log('其他错误信息');
      }
    }
    return err;
  }
);
export default service;
